# 1 "../ocaml/xml-light/xml_lexer.mll"
 (*
 * Xml Light, an small Xml parser/printer with DTD support.
 * Copyright (C) 2003 Nicolas Cannasse (ncannasse@motion-twin.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library has the special exception on linking described in file
 * README.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301 USA
 *)

open Lexing
open Xml_parser
open Dtd

type error =
	| EUnterminatedComment
	| EUnterminatedString
	| EIdentExpected
	| ECloseExpected
	| ENodeExpected
	| EAttributeNameExpected
	| EAttributeValueExpected
	| EUnterminatedEntity

type dtd_error =
	| EInvalidDTDDecl
	| EInvalidDTDTag
	| EDTDItemExpected
	| EInvalidDTDElement
	| EInvalidDTDAttribute

exception Error of error
exception DTDError of dtd_error

type pos = int * int * int * int

type dtd_decl =
	| DTDFile of string
	| DTDData of dtd

type dtd_item_type =
	| TElement
	| TAttribute

type token =
	| Tag of string * (string * string) list * bool
	| PCData of string
	| Endtag of string
	| DocType of (string * dtd_decl)
	| Eof

let last_pos = ref 0
and current_line = ref 0
and current_line_start = ref 0

let tmp = Buffer.create 200

let idents = Hashtbl.create 0

let _ = begin
	Hashtbl.add idents "gt;" ">";
	Hashtbl.add idents "lt;" "<";
	Hashtbl.add idents "amp;" "&";
	Hashtbl.add idents "apos;" "'";
	Hashtbl.add idents "quot;" "\"";
end

let init lexbuf =
	current_line := 1;
	current_line_start := lexeme_start lexbuf;
	last_pos := !current_line_start

let close lexbuf =
	Buffer.reset tmp

let pos lexbuf =
	!current_line ,	!current_line_start ,
	!last_pos ,
	lexeme_start lexbuf

let restore (cl,cls,lp,_) =
	current_line := cl;
	current_line_start := cls;
	last_pos := lp

let newline lexbuf =
	incr current_line;
	last_pos := lexeme_end lexbuf;
	current_line_start := !last_pos

let error lexbuf e =
	last_pos := lexeme_start lexbuf;
	raise (Error e)

let dtd_error lexbuf e =
	last_pos := lexeme_start lexbuf;
	raise (DTDError e)

# 114 "../ocaml/xml-light/xml_lexer.ml"
let __ocaml_lex_tables = {
  Lexing.lex_base = 
   "\000\000\243\255\244\255\001\000\000\000\008\000\010\000\012\000\
    \255\255\011\000\017\000\250\255\000\000\001\000\000\000\000\000\
    \002\000\000\000\000\000\000\000\001\000\253\255\005\000\000\000\
    \001\000\001\000\001\000\252\255\251\255\247\255\020\000\015\000\
    \255\255\006\000\252\255\253\255\003\000\255\255\013\000\254\255\
    \024\000\252\255\253\255\014\000\255\255\254\255\002\000\251\255\
    \000\000\254\255\008\000\015\000\253\255\044\000\001\000\073\000\
    \254\255\071\000\254\255\236\000\255\255\044\001\122\001\254\255\
    \200\001\016\000\254\255\255\255\034\000\026\000\255\255\254\255\
    \022\002\254\255\100\002\185\000\253\255\081\000\186\000\091\000\
    \187\000\254\255\255\255\022\000\252\255\253\255\024\000\255\255\
    \254\255\020\000\252\255\253\255\070\000\255\255\254\255\027\000\
    \252\255\253\255\005\000\017\000\037\000\032\000\046\000\054\000\
    \255\255\039\000\040\000\057\000\050\000\254\255\095\000\253\255\
    \254\255\255\255\035\000\255\255\213\000\188\000\254\255\255\255\
    \069\000\254\255\255\255\072\000\253\255\004\000\008\000\118\000\
    \255\255\102\000\255\255\133\000\253\255\081\000\090\000\098\000\
    \122\000\131\000\125\000\120\000\255\255\121\000\130\000\134\000\
    \125\000\125\000\254\255\170\000\252\255\253\255\134\000\134\000\
    \124\000\255\255\134\000\131\000\127\000\254\255\159\000\254\255\
    \255\255\162\000\254\255\255\255\214\002\243\255\036\003\245\255\
    \246\255\247\255\145\000\249\255\250\255\251\255\252\255\253\255\
    \218\000\255\255\161\000\161\000\165\000\148\000\168\000\248\255\
    \194\000\250\255\251\255\168\000\160\000\170\000\175\000\157\000\
    \177\000\255\255\159\000\165\000\174\000\182\000\174\000\254\255\
    \171\000\185\000\185\000\252\255\114\003\254\255\192\003\236\000\
    \253\255\254\255\255\255\231\000\249\255\201\000\254\255\255\255\
    \190\000\187\000\186\000\204\000\194\000\194\000\208\000\200\000\
    \215\000\217\000\253\255\206\000\211\000\215\000\220\000\222\000\
    \252\255\203\000\223\000\225\000\251\255\224\000\231\000\212\000\
    \222\000\215\000\250\255\037\001\253\255\254\255\255\255";
  Lexing.lex_backtrk = 
   "\255\255\255\255\255\255\010\000\009\000\007\000\001\000\001\000\
    \255\255\006\000\007\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\002\000\001\000\
    \255\255\255\255\255\255\255\255\003\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\003\000\255\255\255\255\255\255\255\255\
    \003\000\255\255\000\000\255\255\255\255\003\000\002\000\000\000\
    \255\255\255\255\255\255\001\000\255\255\255\255\255\255\255\255\
    \000\000\255\255\255\255\255\255\002\000\255\255\255\255\255\255\
    \255\255\255\255\000\000\255\255\255\255\002\000\002\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\003\000\255\255\
    \255\255\255\255\255\255\255\255\003\000\255\255\255\255\255\255\
    \255\255\255\255\003\000\003\000\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\001\000\255\255\003\000\002\000\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\002\000\001\000\255\255\
    \255\255\001\000\255\255\255\255\255\255\002\000\002\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\003\000\003\000\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\011\000\255\255\
    \255\255\255\255\012\000\255\255\255\255\255\255\255\255\255\255\
    \001\000\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\005\000\005\000\005\000\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \002\000\255\255\255\255\255\255\255\255\255\255\000\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\006\000\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255";
  Lexing.lex_default = 
   "\003\000\000\000\000\000\003\000\255\255\255\255\255\255\003\000\
    \000\000\255\255\255\255\000\000\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\000\000\255\255\255\255\
    \255\255\255\255\255\255\000\000\000\000\000\000\255\255\255\255\
    \000\000\034\000\000\000\000\000\255\255\000\000\255\255\000\000\
    \041\000\000\000\000\000\255\255\000\000\000\000\050\000\000\000\
    \255\255\000\000\050\000\255\255\000\000\055\000\255\255\055\000\
    \000\000\058\000\000\000\255\255\000\000\255\255\063\000\000\000\
    \255\255\066\000\000\000\000\000\255\255\255\255\000\000\000\000\
    \073\000\000\000\255\255\076\000\000\000\255\255\255\255\255\255\
    \255\255\000\000\000\000\084\000\000\000\000\000\255\255\000\000\
    \000\000\090\000\000\000\000\000\255\255\000\000\000\000\096\000\
    \000\000\000\000\255\255\255\255\255\255\255\255\255\255\255\255\
    \000\000\255\255\255\255\255\255\255\255\000\000\111\000\000\000\
    \000\000\000\000\255\255\000\000\255\255\255\255\000\000\000\000\
    \121\000\000\000\000\000\124\000\000\000\255\255\255\255\255\255\
    \000\000\255\255\000\000\132\000\000\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\000\000\255\255\255\255\255\255\
    \255\255\255\255\000\000\148\000\000\000\000\000\255\255\255\255\
    \255\255\000\000\255\255\255\255\255\255\000\000\159\000\000\000\
    \000\000\162\000\000\000\000\000\165\000\000\000\255\255\000\000\
    \000\000\000\000\255\255\000\000\000\000\000\000\000\000\000\000\
    \255\255\000\000\255\255\255\255\255\255\255\255\255\255\000\000\
    \185\000\000\000\000\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\000\000\255\255\255\255\255\255\255\255\255\255\000\000\
    \255\255\255\255\255\255\000\000\205\000\000\000\255\255\208\000\
    \000\000\000\000\000\000\212\000\000\000\255\255\000\000\000\000\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\000\000\255\255\255\255\255\255\255\255\255\255\
    \000\000\255\255\255\255\255\255\000\000\255\255\255\255\255\255\
    \255\255\255\255\000\000\244\000\000\000\000\000\000\000";
  Lexing.lex_trans = 
   "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\007\000\008\000\255\255\049\000\006\000\255\255\000\000\
    \037\000\010\000\255\255\006\000\009\000\007\000\255\255\006\000\
    \031\000\006\000\010\000\000\000\031\000\031\000\032\000\000\000\
    \007\000\031\000\044\000\029\000\056\000\126\000\004\000\255\255\
    \010\000\012\000\006\000\009\000\007\000\013\000\028\000\031\000\
    \038\000\010\000\255\255\036\000\031\000\127\000\255\255\009\000\
    \087\000\255\255\088\000\093\000\005\000\255\255\001\000\255\255\
    \009\000\024\000\026\000\022\000\015\000\017\000\021\000\011\000\
    \255\255\023\000\255\255\039\000\045\000\052\000\067\000\016\000\
    \020\000\069\000\054\000\255\255\018\000\025\000\255\255\043\000\
    \071\000\019\000\079\000\014\000\027\000\051\000\105\000\048\000\
    \070\000\024\000\026\000\022\000\079\000\255\255\100\000\101\000\
    \255\255\023\000\255\255\099\000\102\000\094\000\098\000\255\255\
    \092\000\079\000\086\000\082\000\088\000\025\000\097\000\103\000\
    \081\000\104\000\106\000\079\000\107\000\082\000\108\000\109\000\
    \115\000\113\000\081\000\122\000\125\000\255\255\112\000\255\255\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\094\000\128\000\130\000\141\000\135\000\136\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\078\000\080\000\080\000\117\000\133\000\137\000\
    \138\000\117\000\134\000\139\000\140\000\142\000\143\000\144\000\
    \145\000\146\000\149\000\154\000\152\000\153\000\155\000\156\000\
    \157\000\078\000\080\000\080\000\117\000\160\000\117\000\118\000\
    \163\000\178\000\117\000\176\000\179\000\180\000\181\000\176\000\
    \182\000\183\000\186\000\151\000\200\000\194\000\190\000\150\000\
    \191\000\192\000\193\000\195\000\196\000\117\000\077\000\079\000\
    \079\000\197\000\176\000\198\000\199\000\201\000\202\000\203\000\
    \002\000\255\255\047\000\237\000\233\000\189\000\035\000\227\000\
    \255\255\215\000\213\000\187\000\255\255\216\000\214\000\217\000\
    \188\000\220\000\218\000\221\000\091\000\210\000\085\000\222\000\
    \042\000\223\000\224\000\219\000\225\000\226\000\228\000\229\000\
    \230\000\231\000\232\000\234\000\235\000\236\000\238\000\060\000\
    \239\000\240\000\241\000\242\000\255\255\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\246\000\
    \000\000\255\255\000\000\000\000\245\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\060\000\
    \209\000\000\000\000\000\000\000\000\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\064\000\
    \000\000\000\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\119\000\000\000\000\000\
    \000\000\064\000\000\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\000\000\000\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\000\000\000\000\000\000\000\000\064\000\
    \000\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\074\000\000\000\000\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\000\000\000\000\000\000\000\000\000\000\000\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\000\000\000\000\000\000\000\000\074\000\000\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\000\000\000\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\000\000\
    \000\000\000\000\000\000\074\000\000\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\176\000\
    \177\000\000\000\000\000\176\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\176\000\000\000\
    \000\000\170\000\000\000\000\000\000\000\000\000\175\000\174\000\
    \169\000\168\000\173\000\166\000\000\000\000\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\000\000\000\000\000\000\172\000\167\000\000\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\000\000\000\000\000\000\000\000\166\000\000\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\171\000\000\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\000\000\
    \000\000\000\000\000\000\166\000\000\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\206\000\
    \000\000\000\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\000\000\000\000\000\000\
    \000\000\206\000\000\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\000\000\000\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\000\000\000\000\000\000\000\000\206\000\
    \000\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\
    \000\000";
  Lexing.lex_check = 
   "\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\000\000\000\000\003\000\046\000\000\000\003\000\255\255\
    \033\000\005\000\050\000\006\000\009\000\007\000\007\000\006\000\
    \031\000\007\000\010\000\255\255\031\000\030\000\030\000\255\255\
    \000\000\030\000\040\000\004\000\054\000\125\000\000\000\003\000\
    \005\000\005\000\006\000\009\000\007\000\012\000\013\000\031\000\
    \036\000\010\000\007\000\033\000\030\000\126\000\053\000\005\000\
    \083\000\053\000\086\000\089\000\000\000\003\000\000\000\003\000\
    \010\000\023\000\025\000\014\000\012\000\016\000\020\000\005\000\
    \007\000\022\000\007\000\038\000\043\000\051\000\065\000\015\000\
    \019\000\068\000\053\000\055\000\017\000\024\000\055\000\040\000\
    \069\000\018\000\077\000\012\000\026\000\048\000\098\000\046\000\
    \068\000\023\000\025\000\014\000\079\000\050\000\099\000\100\000\
    \053\000\022\000\053\000\095\000\101\000\092\000\095\000\055\000\
    \089\000\077\000\083\000\077\000\086\000\024\000\095\000\102\000\
    \077\000\103\000\105\000\079\000\106\000\079\000\107\000\108\000\
    \114\000\110\000\079\000\120\000\123\000\055\000\110\000\055\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\092\000\127\000\129\000\133\000\134\000\135\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\057\000\057\000\057\000\057\000\057\000\057\000\
    \057\000\057\000\075\000\078\000\080\000\117\000\131\000\136\000\
    \137\000\117\000\131\000\138\000\139\000\141\000\142\000\143\000\
    \144\000\145\000\147\000\150\000\151\000\152\000\154\000\155\000\
    \156\000\075\000\078\000\080\000\117\000\158\000\116\000\116\000\
    \161\000\170\000\116\000\176\000\178\000\179\000\180\000\176\000\
    \181\000\182\000\184\000\147\000\187\000\188\000\189\000\147\000\
    \190\000\191\000\192\000\194\000\195\000\116\000\075\000\078\000\
    \080\000\196\000\176\000\197\000\198\000\200\000\201\000\202\000\
    \000\000\003\000\046\000\216\000\217\000\184\000\033\000\218\000\
    \050\000\211\000\211\000\184\000\007\000\213\000\211\000\213\000\
    \184\000\219\000\213\000\220\000\089\000\207\000\083\000\221\000\
    \040\000\222\000\223\000\213\000\224\000\225\000\227\000\228\000\
    \229\000\230\000\231\000\233\000\234\000\235\000\237\000\059\000\
    \238\000\239\000\240\000\241\000\053\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\243\000\
    \255\255\055\000\255\255\255\255\243\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\059\000\
    \059\000\059\000\059\000\059\000\059\000\059\000\059\000\061\000\
    \207\000\255\255\255\255\255\255\255\255\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\061\000\
    \061\000\061\000\061\000\061\000\061\000\061\000\061\000\062\000\
    \255\255\255\255\062\000\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\116\000\255\255\255\255\
    \255\255\062\000\255\255\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\062\000\062\000\062\000\
    \062\000\062\000\062\000\062\000\062\000\064\000\255\255\255\255\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\255\255\255\255\255\255\255\255\064\000\
    \255\255\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\064\000\064\000\064\000\064\000\064\000\
    \064\000\064\000\064\000\072\000\255\255\255\255\072\000\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\255\255\255\255\255\255\255\255\255\255\255\255\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\255\255\255\255\255\255\255\255\072\000\255\255\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\072\000\072\000\072\000\072\000\072\000\072\000\072\000\
    \072\000\074\000\255\255\255\255\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\255\255\
    \255\255\255\255\255\255\074\000\255\255\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\074\000\
    \074\000\074\000\074\000\074\000\074\000\074\000\074\000\164\000\
    \164\000\255\255\255\255\164\000\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\164\000\255\255\
    \255\255\164\000\255\255\255\255\255\255\255\255\164\000\164\000\
    \164\000\164\000\164\000\164\000\255\255\255\255\164\000\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\255\255\255\255\255\255\164\000\164\000\255\255\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\255\255\255\255\255\255\255\255\164\000\255\255\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\164\000\164\000\164\000\164\000\164\000\164\000\164\000\
    \164\000\166\000\164\000\255\255\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\255\255\
    \255\255\255\255\255\255\255\255\255\255\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\255\255\
    \255\255\255\255\255\255\166\000\255\255\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\166\000\
    \166\000\166\000\166\000\166\000\166\000\166\000\166\000\204\000\
    \255\255\255\255\204\000\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\255\255\255\255\255\255\
    \255\255\255\255\255\255\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\255\255\255\255\255\255\
    \255\255\204\000\255\255\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\204\000\204\000\204\000\
    \204\000\204\000\204\000\204\000\204\000\206\000\255\255\255\255\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\255\255\255\255\255\255\255\255\206\000\
    \255\255\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\206\000\206\000\206\000\206\000\206\000\
    \206\000\206\000\206\000\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\
    \255\255";
  Lexing.lex_base_code = 
   "";
  Lexing.lex_backtrk_code = 
   "";
  Lexing.lex_default_code = 
   "";
  Lexing.lex_trans_code = 
   "";
  Lexing.lex_check_code = 
   "";
  Lexing.lex_code = 
   "";
}

let rec token lexbuf =
    __ocaml_lex_token_rec lexbuf 0
and __ocaml_lex_token_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 123 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			token lexbuf
		)
# 544 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 128 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_end lexbuf;
			token lexbuf
		)
# 552 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 133 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			ignore_spaces lexbuf;
			let root = ident_name lexbuf in
			ignore_spaces lexbuf;
			let data = dtd_data lexbuf in
			DocType (root, data)
		)
# 564 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 142 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			Buffer.reset tmp;
			PCData (cdata lexbuf)
		)
# 573 "../ocaml/xml-light/xml_lexer.ml"

  | 4 ->
# 148 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			comment lexbuf;
			token lexbuf
		)
# 582 "../ocaml/xml-light/xml_lexer.ml"

  | 5 ->
# 154 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			header lexbuf;
			token lexbuf;
		)
# 591 "../ocaml/xml-light/xml_lexer.ml"

  | 6 ->
# 160 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			let tag = ident_name lexbuf in
			ignore_spaces lexbuf;
			close_tag lexbuf;
			Endtag tag
		)
# 602 "../ocaml/xml-light/xml_lexer.ml"

  | 7 ->
# 168 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			let tag = ident_name lexbuf in
			ignore_spaces lexbuf;
			let attribs, closed = attributes lexbuf in
			Tag(tag, attribs, closed)
		)
# 613 "../ocaml/xml-light/xml_lexer.ml"

  | 8 ->
# 176 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			Buffer.reset tmp;
			Buffer.add_string tmp (lexeme lexbuf);
			PCData (pcdata lexbuf)
		)
# 623 "../ocaml/xml-light/xml_lexer.ml"

  | 9 ->
# 183 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			Buffer.reset tmp;
			Buffer.add_string tmp (entity lexbuf);
			PCData (pcdata lexbuf)
		)
# 633 "../ocaml/xml-light/xml_lexer.ml"

  | 10 ->
# 190 "../ocaml/xml-light/xml_lexer.mll"
  (
			last_pos := lexeme_start lexbuf;
			Buffer.reset tmp;
			Buffer.add_string tmp (lexeme lexbuf);
			PCData (pcdata lexbuf)
		)
# 643 "../ocaml/xml-light/xml_lexer.ml"

  | 11 ->
# 196 "../ocaml/xml-light/xml_lexer.mll"
       ( Eof )
# 648 "../ocaml/xml-light/xml_lexer.ml"

  | 12 ->
# 198 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf ENodeExpected )
# 653 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_token_rec lexbuf __ocaml_lex_state

and ignore_spaces lexbuf =
    __ocaml_lex_ignore_spaces_rec lexbuf 30
and __ocaml_lex_ignore_spaces_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 202 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			ignore_spaces lexbuf
		)
# 667 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 207 "../ocaml/xml-light/xml_lexer.mll"
  ( ignore_spaces lexbuf )
# 672 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 209 "../ocaml/xml-light/xml_lexer.mll"
  ( () )
# 677 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_ignore_spaces_rec lexbuf __ocaml_lex_state

and comment lexbuf =
    __ocaml_lex_comment_rec lexbuf 33
and __ocaml_lex_comment_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 213 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			comment lexbuf
		)
# 691 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 218 "../ocaml/xml-light/xml_lexer.mll"
  ( () )
# 696 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 220 "../ocaml/xml-light/xml_lexer.mll"
  ( raise (Error EUnterminatedComment) )
# 701 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 222 "../ocaml/xml-light/xml_lexer.mll"
  ( comment lexbuf )
# 706 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_comment_rec lexbuf __ocaml_lex_state

and header lexbuf =
    __ocaml_lex_header_rec lexbuf 40
and __ocaml_lex_header_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 226 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			header lexbuf
		)
# 720 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 231 "../ocaml/xml-light/xml_lexer.mll"
  ( () )
# 725 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 233 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf ECloseExpected )
# 730 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 235 "../ocaml/xml-light/xml_lexer.mll"
  ( header lexbuf )
# 735 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_header_rec lexbuf __ocaml_lex_state

and cdata lexbuf =
    __ocaml_lex_cdata_rec lexbuf 46
and __ocaml_lex_cdata_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 239 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_string tmp (lexeme lexbuf);
			cdata lexbuf
		)
# 749 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 244 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			Buffer.add_string tmp (lexeme lexbuf);
			cdata lexbuf
		)
# 758 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 250 "../ocaml/xml-light/xml_lexer.mll"
  ( Buffer.contents tmp )
# 763 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 252 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_string tmp (lexeme lexbuf);
			cdata lexbuf
		)
# 771 "../ocaml/xml-light/xml_lexer.ml"

  | 4 ->
# 257 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf ECloseExpected )
# 776 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_cdata_rec lexbuf __ocaml_lex_state

and pcdata lexbuf =
    __ocaml_lex_pcdata_rec lexbuf 53
and __ocaml_lex_pcdata_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 261 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_string tmp (lexeme lexbuf);
			pcdata lexbuf
		)
# 790 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 266 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_string tmp (lexeme lexbuf);
			pcdata lexbuf;
		)
# 798 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 271 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_string tmp (entity lexbuf);
			pcdata lexbuf
		)
# 806 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 276 "../ocaml/xml-light/xml_lexer.mll"
  ( Buffer.contents tmp )
# 811 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_pcdata_rec lexbuf __ocaml_lex_state

and entity lexbuf =
    __ocaml_lex_entity_rec lexbuf 57
and __ocaml_lex_entity_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 280 "../ocaml/xml-light/xml_lexer.mll"
  (
			let ident = lexeme lexbuf in
			try
				Hashtbl.find idents (String.lowercase ident)
			with
				Not_found -> "&" ^ ident
		)
# 828 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 288 "../ocaml/xml-light/xml_lexer.mll"
  ( raise (Error EUnterminatedEntity) )
# 833 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_entity_rec lexbuf __ocaml_lex_state

and ident_name lexbuf =
    __ocaml_lex_ident_name_rec lexbuf 62
and __ocaml_lex_ident_name_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 292 "../ocaml/xml-light/xml_lexer.mll"
  ( lexeme lexbuf )
# 844 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 294 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf EIdentExpected )
# 849 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_ident_name_rec lexbuf __ocaml_lex_state

and close_tag lexbuf =
    __ocaml_lex_close_tag_rec lexbuf 65
and __ocaml_lex_close_tag_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 298 "../ocaml/xml-light/xml_lexer.mll"
  ( () )
# 860 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 300 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf ECloseExpected )
# 865 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_close_tag_rec lexbuf __ocaml_lex_state

and attributes lexbuf =
    __ocaml_lex_attributes_rec lexbuf 68
and __ocaml_lex_attributes_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 304 "../ocaml/xml-light/xml_lexer.mll"
  ( [], false )
# 876 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 306 "../ocaml/xml-light/xml_lexer.mll"
  ( [], true )
# 881 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 308 "../ocaml/xml-light/xml_lexer.mll"
  (
			let key = attribute lexbuf in
			let data = attribute_data lexbuf in
			ignore_spaces lexbuf;
			let others, closed = attributes lexbuf in
			(key, data) :: others, closed
		)
# 892 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_attributes_rec lexbuf __ocaml_lex_state

and attribute lexbuf =
    __ocaml_lex_attribute_rec lexbuf 72
and __ocaml_lex_attribute_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 318 "../ocaml/xml-light/xml_lexer.mll"
  ( lexeme lexbuf )
# 903 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 320 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf EAttributeNameExpected )
# 908 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_attribute_rec lexbuf __ocaml_lex_state

and attribute_data lexbuf =
    __ocaml_lex_attribute_data_rec lexbuf 75
and __ocaml_lex_attribute_data_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 324 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			last_pos := lexeme_end lexbuf;
			dq_string lexbuf
		)
# 923 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 330 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			last_pos := lexeme_end lexbuf;
			q_string lexbuf
		)
# 932 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 336 "../ocaml/xml-light/xml_lexer.mll"
  ( error lexbuf EAttributeValueExpected )
# 937 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_attribute_data_rec lexbuf __ocaml_lex_state

and dq_string lexbuf =
    __ocaml_lex_dq_string_rec lexbuf 83
and __ocaml_lex_dq_string_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 340 "../ocaml/xml-light/xml_lexer.mll"
  ( Buffer.contents tmp )
# 948 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 342 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_char tmp (lexeme_char lexbuf 1);
			dq_string lexbuf
		)
# 956 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 347 "../ocaml/xml-light/xml_lexer.mll"
  ( raise (Error EUnterminatedString) )
# 961 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 349 "../ocaml/xml-light/xml_lexer.mll"
  ( 
			Buffer.add_char tmp (lexeme_char lexbuf 0);
			dq_string lexbuf
		)
# 969 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dq_string_rec lexbuf __ocaml_lex_state

and q_string lexbuf =
    __ocaml_lex_q_string_rec lexbuf 89
and __ocaml_lex_q_string_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 356 "../ocaml/xml-light/xml_lexer.mll"
  ( Buffer.contents tmp )
# 980 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 358 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.add_char tmp (lexeme_char lexbuf 1);
			q_string lexbuf
		)
# 988 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 363 "../ocaml/xml-light/xml_lexer.mll"
  ( raise (Error EUnterminatedString) )
# 993 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 365 "../ocaml/xml-light/xml_lexer.mll"
  ( 
			Buffer.add_char tmp (lexeme_char lexbuf 0);
			q_string lexbuf
		)
# 1001 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_q_string_rec lexbuf __ocaml_lex_state

and dtd_data lexbuf =
    __ocaml_lex_dtd_data_rec lexbuf 95
and __ocaml_lex_dtd_data_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 372 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			(* skipping Public ID *)
			let _ = dtd_file lexbuf in
			let file = dtd_file lexbuf in
			dtd_end_decl lexbuf;
			DTDFile file
		)
# 1019 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 381 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			let file = dtd_file lexbuf in
			dtd_end_decl lexbuf;
			DTDFile file
		)
# 1029 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 388 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			let data = dtd_intern lexbuf in
			dtd_end_decl lexbuf;
			DTDData data
		)
# 1039 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 395 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDDecl )
# 1044 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_data_rec lexbuf __ocaml_lex_state

and dtd_file lexbuf =
    __ocaml_lex_dtd_file_rec lexbuf 110
and __ocaml_lex_dtd_file_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 399 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let s = dq_string lexbuf in
			ignore_spaces lexbuf;
			s
		)
# 1060 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 406 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let s = q_string lexbuf in
			ignore_spaces lexbuf;
			s
		)
# 1070 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 413 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDDecl )
# 1075 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_file_rec lexbuf __ocaml_lex_state

and dtd_intern lexbuf =
    __ocaml_lex_dtd_intern_rec lexbuf 114
and __ocaml_lex_dtd_intern_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 417 "../ocaml/xml-light/xml_lexer.mll"
  ( 
			ignore_spaces lexbuf;
			[]
		)
# 1089 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 422 "../ocaml/xml-light/xml_lexer.mll"
  (
			let l = dtd_item lexbuf in
			l @ (dtd_intern lexbuf)
		)
# 1097 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_intern_rec lexbuf __ocaml_lex_state

and dtd lexbuf =
    __ocaml_lex_dtd_rec lexbuf 116
and __ocaml_lex_dtd_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 429 "../ocaml/xml-light/xml_lexer.mll"
  ( [] )
# 1108 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 431 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			dtd lexbuf
		)
# 1116 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 436 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd lexbuf )
# 1121 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 438 "../ocaml/xml-light/xml_lexer.mll"
  (
			let l = dtd_item lexbuf in
			l @ (dtd lexbuf)
		)
# 1129 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_rec lexbuf __ocaml_lex_state

and dtd_end_decl lexbuf =
    __ocaml_lex_dtd_end_decl_rec lexbuf 120
and __ocaml_lex_dtd_end_decl_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 445 "../ocaml/xml-light/xml_lexer.mll"
  ( ignore_spaces lexbuf )
# 1140 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 447 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDDecl )
# 1145 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_end_decl_rec lexbuf __ocaml_lex_state

and dtd_item lexbuf =
    __ocaml_lex_dtd_item_rec lexbuf 123
and __ocaml_lex_dtd_item_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 451 "../ocaml/xml-light/xml_lexer.mll"
  (
			comment lexbuf;
			[];
		)
# 1159 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 456 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			let t = dtd_item_type lexbuf in
			let name = (try ident_name lexbuf with Error EIdentExpected -> raise (DTDError EInvalidDTDDecl)) in
			ignore_spaces lexbuf;
			match t with
			| TElement -> [ DTDElement (name , (dtd_element_type lexbuf)) ]
			| TAttribute -> List.map (fun (attrname,atype,adef) -> DTDAttribute (name, attrname, atype, adef)) (dtd_attributes lexbuf)
		)
# 1172 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 466 "../ocaml/xml-light/xml_lexer.mll"
  (  dtd_error lexbuf EDTDItemExpected )
# 1177 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_item_rec lexbuf __ocaml_lex_state

and dtd_attributes lexbuf =
    __ocaml_lex_dtd_attributes_rec lexbuf 129
and __ocaml_lex_dtd_attributes_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 470 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			[]
		)
# 1191 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 475 "../ocaml/xml-light/xml_lexer.mll"
  (
			let attrname = (try ident_name lexbuf with Error EIdentExpected -> raise (DTDError EInvalidDTDAttribute)) in
			ignore_spaces lexbuf;
			let atype = dtd_attr_type lexbuf in
			let adef = dtd_attr_default lexbuf in
			let a = (attrname, atype, adef) in
			a :: (dtd_attributes lexbuf)
		)
# 1203 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attributes_rec lexbuf __ocaml_lex_state

and dtd_item_type lexbuf =
    __ocaml_lex_dtd_item_type_rec lexbuf 131
and __ocaml_lex_dtd_item_type_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 486 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			TElement
		)
# 1217 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 491 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			TAttribute
		)
# 1225 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 496 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDTag )
# 1230 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_item_type_rec lexbuf __ocaml_lex_state

and dtd_element_type lexbuf =
    __ocaml_lex_dtd_element_type_rec lexbuf 147
and __ocaml_lex_dtd_element_type_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 500 "../ocaml/xml-light/xml_lexer.mll"
  ( 
			ignore_spaces lexbuf;
			dtd_end_element lexbuf;
			DTDAny
		)
# 1245 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 506 "../ocaml/xml-light/xml_lexer.mll"
  ( 
			ignore_spaces lexbuf;
			dtd_end_element lexbuf;
			DTDEmpty
		)
# 1254 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 512 "../ocaml/xml-light/xml_lexer.mll"
  (
			try
				let item = Xml_parser.dtd_element dtd_element_token lexbuf in
				ignore_spaces lexbuf;
				DTDChild item
			with
				Parsing.Parse_error -> dtd_error lexbuf EInvalidDTDElement
		)
# 1266 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 521 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDElement )
# 1271 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_element_type_rec lexbuf __ocaml_lex_state

and dtd_end_element lexbuf =
    __ocaml_lex_dtd_end_element_rec lexbuf 158
and __ocaml_lex_dtd_end_element_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 525 "../ocaml/xml-light/xml_lexer.mll"
  ( ignore_spaces lexbuf )
# 1282 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 527 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDElement )
# 1287 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_end_element_rec lexbuf __ocaml_lex_state

and dtd_end_attribute lexbuf =
    __ocaml_lex_dtd_end_attribute_rec lexbuf 161
and __ocaml_lex_dtd_end_attribute_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 531 "../ocaml/xml-light/xml_lexer.mll"
  ( ignore_spaces lexbuf )
# 1298 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 533 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1303 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_end_attribute_rec lexbuf __ocaml_lex_state

and dtd_element_token lexbuf =
    __ocaml_lex_dtd_element_token_rec lexbuf 164
and __ocaml_lex_dtd_element_token_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 537 "../ocaml/xml-light/xml_lexer.mll"
  (
			newline lexbuf;
			dtd_element_token lexbuf
		)
# 1317 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 542 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_element_token lexbuf )
# 1322 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 544 "../ocaml/xml-light/xml_lexer.mll"
  ( OPEN )
# 1327 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 546 "../ocaml/xml-light/xml_lexer.mll"
  ( CLOSE )
# 1332 "../ocaml/xml-light/xml_lexer.ml"

  | 4 ->
# 548 "../ocaml/xml-light/xml_lexer.mll"
  ( NEXT )
# 1337 "../ocaml/xml-light/xml_lexer.ml"

  | 5 ->
# 550 "../ocaml/xml-light/xml_lexer.mll"
  ( END )
# 1342 "../ocaml/xml-light/xml_lexer.ml"

  | 6 ->
# 552 "../ocaml/xml-light/xml_lexer.mll"
  ( OR )
# 1347 "../ocaml/xml-light/xml_lexer.ml"

  | 7 ->
# 554 "../ocaml/xml-light/xml_lexer.mll"
  ( PCDATA )
# 1352 "../ocaml/xml-light/xml_lexer.ml"

  | 8 ->
# 556 "../ocaml/xml-light/xml_lexer.mll"
  ( STAR )
# 1357 "../ocaml/xml-light/xml_lexer.ml"

  | 9 ->
# 558 "../ocaml/xml-light/xml_lexer.mll"
  ( PLUS )
# 1362 "../ocaml/xml-light/xml_lexer.ml"

  | 10 ->
# 560 "../ocaml/xml-light/xml_lexer.mll"
  ( QUESTION )
# 1367 "../ocaml/xml-light/xml_lexer.ml"

  | 11 ->
# 562 "../ocaml/xml-light/xml_lexer.mll"
  ( IDENT (lexeme lexbuf) )
# 1372 "../ocaml/xml-light/xml_lexer.ml"

  | 12 ->
# 564 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDElement )
# 1377 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_element_token_rec lexbuf __ocaml_lex_state

and dtd_attr_type lexbuf =
    __ocaml_lex_dtd_attr_type_rec lexbuf 184
and __ocaml_lex_dtd_attr_type_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 568 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDCData
		)
# 1391 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 573 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDNMToken
		)
# 1399 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 578 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
		 	DTDID
		)
# 1407 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 583 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDIDRef
		)
# 1415 "../ocaml/xml-light/xml_lexer.ml"

  | 4 ->
# 588 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDEnum (dtd_attr_enum lexbuf)
		)
# 1423 "../ocaml/xml-light/xml_lexer.ml"

  | 5 ->
# 593 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1428 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attr_type_rec lexbuf __ocaml_lex_state

and dtd_attr_enum lexbuf =
    __ocaml_lex_dtd_attr_enum_rec lexbuf 204
and __ocaml_lex_dtd_attr_enum_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 597 "../ocaml/xml-light/xml_lexer.mll"
  (
			let v = lexeme lexbuf in
			ignore_spaces lexbuf;
			v :: (dtd_attr_enum_next lexbuf)
		)
# 1443 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 603 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1448 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attr_enum_rec lexbuf __ocaml_lex_state

and dtd_attr_enum_next lexbuf =
    __ocaml_lex_dtd_attr_enum_next_rec lexbuf 207
and __ocaml_lex_dtd_attr_enum_next_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 607 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			[]
		)
# 1462 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 612 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			dtd_attr_enum lexbuf
		)
# 1470 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 617 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1475 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attr_enum_next_rec lexbuf __ocaml_lex_state

and dtd_attr_default lexbuf =
    __ocaml_lex_dtd_attr_default_rec lexbuf 211
and __ocaml_lex_dtd_attr_default_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 621 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let v = (try dq_string lexbuf with Error EUnterminatedString -> raise (DTDError EInvalidDTDAttribute)) in
			ignore_spaces lexbuf;
			DTDDefault v
		)
# 1491 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 628 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let v = (try q_string lexbuf with Error EUnterminatedString -> raise (DTDError EInvalidDTDAttribute)) in
			ignore_spaces lexbuf;
			DTDDefault v
		)
# 1501 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 635 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDRequired
		)
# 1509 "../ocaml/xml-light/xml_lexer.ml"

  | 3 ->
# 640 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDImplied
		)
# 1517 "../ocaml/xml-light/xml_lexer.ml"

  | 4 ->
# 645 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDFixed (dtd_attr_string lexbuf)
		)
# 1525 "../ocaml/xml-light/xml_lexer.ml"

  | 5 ->
# 650 "../ocaml/xml-light/xml_lexer.mll"
  (
			ignore_spaces lexbuf;
			DTDDefault (dtd_attr_string lexbuf)
		)
# 1533 "../ocaml/xml-light/xml_lexer.ml"

  | 6 ->
# 655 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1538 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attr_default_rec lexbuf __ocaml_lex_state

and dtd_attr_string lexbuf =
    __ocaml_lex_dtd_attr_string_rec lexbuf 243
and __ocaml_lex_dtd_attr_string_rec lexbuf __ocaml_lex_state =
  match Lexing.engine __ocaml_lex_tables __ocaml_lex_state lexbuf with
      | 0 ->
# 659 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let v = (try dq_string lexbuf with Error EUnterminatedString -> raise (DTDError EInvalidDTDAttribute)) in
			ignore_spaces lexbuf;
			v
		)
# 1554 "../ocaml/xml-light/xml_lexer.ml"

  | 1 ->
# 666 "../ocaml/xml-light/xml_lexer.mll"
  (
			Buffer.reset tmp;
			let v = (try q_string lexbuf with Error EUnterminatedString -> raise (DTDError EInvalidDTDAttribute)) in
			ignore_spaces lexbuf;
			v
		)
# 1564 "../ocaml/xml-light/xml_lexer.ml"

  | 2 ->
# 673 "../ocaml/xml-light/xml_lexer.mll"
  ( dtd_error lexbuf EInvalidDTDAttribute )
# 1569 "../ocaml/xml-light/xml_lexer.ml"

  | __ocaml_lex_state -> lexbuf.Lexing.refill_buff lexbuf; __ocaml_lex_dtd_attr_string_rec lexbuf __ocaml_lex_state

;;

